# zip() 函数

"""
zip() 函数可以接收多个可迭代的对象，然后把每个可迭代对象中的第i个元素组合在一起，形成一个新的迭代器（元组迭代器）
参数：
    *iterables，任意个可迭代对象
    return: 元组迭代器
"""

var1 = [2, 3, 4]
var2 = ['a', 'b', 'c']
var3 = '987'
var4 = ('A', 'B', 'C')

res = zip(var1, var2, var3, var4)
print(res, type(res))
# <zip object at 0x0000024CE36D1900> <class 'zip'>

# print(next(res))
# print(list(res))
for i in res:
    print(i)
'''
(2, 'a', '9', 'A')
(3, 'b', '8', 'B')
(4, 'c', '7', 'C')
'''

# zip() 与 * 运算符相结合可以用来拆解一个列表：
x = [1, 2, 3]
y = [4, 5, 6]
zipped = zip(x, y)
x2, y2 = zip(*zip(x, y))
print(list(x2), list(y2))
# [1, 2, 3] [4, 5, 6]

print(*zip(x, y))
# (1, 4) (2, 5) (3, 6)
print(zip(x, y))
# <zip object at 0x00000177A5B2FF00>


